package ocio.services;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import com.opensymphony.xwork2.Action;
import ocio.beans.Subtipo;
import ocio.dao.SubtipoDao;
/**
 * Clase encargada de ofrecer la lógica de negocio asociada a la clase Subtipo.
 * Ofrece funciones CRUD para la gestión de subtipos.
 * @author Esther García Galán
 * @author Rubén Gómez Vales
 * @version 1.0 13/05/2014
 * @see ocio.beans.Subtipo
 * @see ocio.services.ServiceIF
 */
public class SubtipoService implements ServiceIF {

	SubtipoDao subtipoDao;
	
	public SubtipoService (){
		subtipoDao = new SubtipoDao();
	}
	
	/**
	 * Solicita la lista de todos los subtipos de la base de datos.
	 * @return listaSubtipos Lista de todos los subtipos de la base de datos.
	 */
	public List<Subtipo> ListAllSubtipos(){
		List<Subtipo> listaSubtipos = new ArrayList<Subtipo>();
		listaSubtipos= subtipoDao.getAll();			
	    return listaSubtipos;
	}
	
	@Override
	public boolean add(Action form) {
		return false;
	}
	
	public List<Object> searchByFields(Action form){
		return null;
	}   

	/**
	 * Solicita la lista de todos los subtipos que cumplan con los requisitos
	 * recogidos en un objeto de la misma clase Subtipo.
	 * @param subtipo objeto de la clase Subtipo con los criterios de búsqueda.
	 * @return listaSibtipos Lista de todos los subtipos que cumplen los criterios de búsqueda.
	 */
	public List<Object> searchByFields(Subtipo subtipo){
		List<Object> resul = new ArrayList<Object>();
		List<Subtipo> listaSubtipos = new ArrayList<Subtipo>();
		
		listaSubtipos = subtipoDao.findByExample(subtipo);	
	    Iterator<Subtipo> itr = listaSubtipos.iterator();
	    while(itr.hasNext()) {
	         Object element = itr.next();
	         resul.add(element);
	    }		
	    return resul;
	}   
	
	@Override
	public void update(Action form) {
		
	}
	
	/**
	 * Búsqueda de subtipo por identificador.
	 * @param id identifificador en la base de datos del subtipo.
	 * @return s Objeto correspondiente al subtipo con el identificador dado.
	 */
	public Object searchById(int id){
		Subtipo s;
		s = subtipoDao.findById(id);
		return s;
	}

	/**
	 * Borra el subtipo.
	 * @param o Objeto correspondiente al subtipo que se quiere borrar.
	 */
	@Override
	public void delete(Object o) {
		Subtipo s;
		s = (Subtipo)o;
		subtipoDao.delete(s);
	}

}

